package com.yuanduan.mplus.presenter;


import com.cj.framework.util.IOkHttp;
import com.cj.framework.util.Msg;
import com.cj.framework.util.OkHttpImp;
import com.cj.framework.util.RSAUtils;
import com.yuanduan.mplus.config.Config;
import com.yuanduan.mplus.util.DateManager;
import com.yuanduan.mplus.view.DriverScore1Activity;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * Created by Administrator on 2016/9/22.
 */
public class DriveScoreManager {
    private DriverScore1Activity activity;
    private int[][] dateinfos;
    private IOkHttp okHttp=new OkHttpImp();
    private IOkHttp.IHttpCallback callback=new IOkHttp.IHttpCallback() {
        @Override
        public void onResponse(Msg msg, int index) {
            String message=msg.content();
//            message= RSAUtils.decryptWithRSA(message);
            switch(index){
                case 0:
                    dealWithBarChartData(message);
                    break;
                case 1:
                    activity.dismissDialog();
                    dealWithRadarChartData(message);
                    break;
            }
//
        }

        @Override
        public void onError(Exception e) {

        }
    };

    private void dealWithRadarChartData(String message) {
        fillRadarChartData(null);
        activity.setRadarChartData(data2[0]);
//        try{
//            JSONObject jsonObject=new JSONObject(message);
//            int rs=jsonObject.getInt("RS");
//            if(rs==1){
//                fillRadarChartData(jsonObject);
//                activity.setRadarChartData(data2[0]);
//            }else{
//                activity.setError();
//            }
//        } catch (JSONException e) {
//            e.printStackTrace();
//        }
    }

    private void fillRadarChartData(JSONObject jsonObject) {
        data2[0]=new ArrayList<>();
        ArrayList<Float> a1=new ArrayList<>();
        a1.add(10f);
        a1.add(11f);
        a1.add(5f);
        a1.add(6f);
        a1.add(1f);
        ArrayList<Float> a2=new ArrayList<>();
        a2.add(3f);
        a2.add(4f);
        a2.add(19f);
        a2.add(21f);
        a2.add(22f);
        data2[0].add(a1);
        data2[0].add(a2);
        data2[1]=new ArrayList<>();
        ArrayList<Float> a3=new ArrayList<>();
        a3.add(1f);
        a3.add(21f);
        a3.add(15f);
        a3.add(16f);
        a3.add(11f);
        ArrayList<Float> a4=new ArrayList<>();
        a4.add(31f);
        a4.add(41f);
        a4.add(9f);
        a4.add(31f);
        a4.add(32f);
        data2[1].add(a3);
        data2[1].add(a4);
        data2[2]=new ArrayList<>();
        ArrayList<Float> a5=new ArrayList<>();
        a5.add(10f);
        a5.add(11f);
        a5.add(5f);
        a5.add(6f);
        a5.add(1f);
        ArrayList<Float> a6=new ArrayList<>();
        a6.add(13f);
        a6.add(14f);
        a6.add(9f);
        a6.add(1f);
        a6.add(32f);
        data2[2].add(a5);
        data2[2].add(a6);
        data2[3]=new ArrayList<>();
        ArrayList<Float> a7=new ArrayList<>();
        a7.add(10f);
        a7.add(11f);
        a7.add(15f);
        a7.add(16f);
        a7.add(11f);
        ArrayList<Float> a8=new ArrayList<>();
        a8.add(13f);
        a8.add(14f);
        a8.add(9f);
        a8.add(2f);
        a8.add(12f);
        data2[3].add(a7);
        data2[3].add(a8);
    }

    private void dealWithBarChartData(String message) {
        fillBarChartData(null);
        activity.setBarChartData(data1);
        getRadarChartData(phone);
        return;
//        try {
//                JSONObject jsonObject=new JSONObject(message);
//                int rs=jsonObject.getInt("RS");
//                if(rs==1){

//                    fillBarChartData(jsonObject);
//                    activity.setBarChartData(data1);
//                }else{
//                    activity.setError();
//                    return;
//                }
//            } catch (JSONException e) {
//                e.printStackTrace();
//            }
    }

    private void fillBarChartData(JSONObject jsonObject) {
        data1.clear();
        ArrayList<Float> d1=new ArrayList<>();
        d1.add(10f);
        d1.add(15f);
        d1.add(2f);
        d1.add(20f);
        ArrayList<Float> d2=new ArrayList<>();
        d2.add(15f);
        d2.add(12f);
        d2.add(13f);
        d2.add(16f);
        data1.add(d1);
        data1.add(d2);
    }

    public DriveScoreManager(DriverScore1Activity activity) {
        this.activity=activity;
        dateinfos= DateManager.getDatInfos();
        data2=new ArrayList[4];
        for(int i=0;i<data2.length;i++){
            data2[i]= new ArrayList<ArrayList<Float>>();
        }
    }

    public void destroy(){
        activity=null;
    }

    private String phone;
    public void run(String phone,int position){
        if(position==0){
            this.phone=phone;
            getBarChartData(phone);
        }else{
            activity.invalidateBarChart();
            activity.setRadarChartData(data2[position]);
        }
    }


    private ArrayList<ArrayList<Float>>[] data2;
    private void getRadarChartData(String phone) {
        HashMap hashMap=new HashMap();
        hashMap.put("UserPhone",phone);
        hashMap.put("YearCode",dateinfos[0][0]+"");
        hashMap.put("WeekCode",dateinfos[0][1]+"");
        okHttp.httpInfoPost(Config.URL,Config.translateMap(hashMap),callback,1);
    }

    private ArrayList<ArrayList<Float>> data1=new ArrayList<ArrayList<Float>>();
    private void getBarChartData(String phone) {
        HashMap hashMap=new HashMap();
        hashMap.put("UserPhone",phone);
        hashMap.put("YearCode",dateinfos[0][0]+"");
        hashMap.put("WeekCode",dateinfos[0][1]+"");
        okHttp.httpInfoPost(Config.URL,Config.translateMap(hashMap),callback,0);
    }


    public void setXValues(ArrayList<String> xValues) {
        xValues.add(dateinfos[3][1]+"周");
        xValues.add(dateinfos[2][1]+"周");
        xValues.add(dateinfos[1][1]+"周");
        xValues.add(dateinfos[0][1]+"周");
    }
}
